//package com.emar.adx.yiqifa.util;
//
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.apache.http.HttpResponse;
//import org.apache.http.HttpStatus;
//import org.apache.http.client.ClientProtocolException;
//import org.apache.http.client.config.RequestConfig;
//import org.apache.http.client.methods.HttpGet;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.client.protocol.HttpClientContext;
//import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
//import org.apache.http.conn.ssl.SSLContexts;
//import org.apache.http.conn.ssl.TrustStrategy;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.HttpClients;
//import org.apache.http.util.EntityUtils;
//import org.codehaus.jettison.json.JSONObject;
//
//import javax.net.ssl.SSLContext;
//import java.io.IOException;
//import java.net.URLDecoder;
//import java.security.cert.CertificateException;
//import java.security.cert.X509Certificate;
//
///**
// * 通过HttpClient发送请求
// *
// * @author hanyahui
// *
// */
//public class HttpClientUtil {
//
//    private static final Log log = LogFactory
//            .getLog(HttpClientUtil.class);
//
////	private static final Logger log = LoggerFactory
////			.getLogger(HttpClientUtil.class);
////
//	private static CloseableHttpClient httpClient = null;
//	/**
//	 * 发送GET请求
//	 *
//	 * @param url
//	 *            地址
//	 * @return
//	 * @throws ClientProtocolException
//	 * @throws IOException
//	 */
//	public static String doGet(String url) throws ClientProtocolException,
//			IOException {
//		String strResult = null;
//		httpClient = HttpClients.createDefault();
//        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(3000).setConnectTimeout(3000).build();//设置请求和传输超时时间
//
//		HttpGet httpGet  = new HttpGet(url);
//        httpGet.setConfig(requestConfig);
//
//        HttpResponse resp = httpClient.execute(httpGet);
//		if(null != resp){
//			strResult = EntityUtils.toString(resp.getEntity());
//			if (resp.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
//				log.error("get请求提交失败:" + url);
//			}
//		}
//		return strResult;
//	}
//
//	/**
//	 * POST请求
//	 *
//	 * @param url
//	 *            url地址
//	 * @param jsonParam
//	 *            参数
//	 * @param noNeedResponse
//	 *            不需要返回结果
//	 * @return
//	 * @throws IOException
//	 * @throws ClientProtocolException
//	 */
//	public static String doPost(String url, JSONObject jsonParam,
//			boolean noNeedResponse) throws ClientProtocolException, IOException {
////		httpClient = HttpClientBuilder.create()
////				.setRetryHandler(new DefaultHttpRequestRetryHandler())
////				.build();
//
//        httpClient = HttpClients.createDefault();
//        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(3000).setConnectTimeout(3000).build();//设置请求和传输超时时间
//		String str = null;
//		HttpPost httpPost = new HttpPost(url);
//        httpPost.setConfig(requestConfig);
//
//		if (null != jsonParam) {
//			StringEntity entity = new StringEntity(jsonParam.toString(),
//					"utf-8");
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//            httpPost.setEntity(entity);
//		}
//
//		HttpResponse result = httpClient.execute(httpPost);
//		url = URLDecoder.decode(url, "UTF-8");
//		if (result.getStatusLine().getStatusCode() == 200) {
//			try {
//				str = EntityUtils.toString(result.getEntity());
//				if (noNeedResponse) {
//					return null;
//				}
//			} catch (Exception e) {
//				log.error("post请求提交失败:" + url, e);
//			}
//		}
//		return str;
//	}
//
//	public static void closeConnection() {
//		if (httpClient != null) {
//			try {
//				httpClient.close();
//			} catch (IOException e) {
//				log.error("close httpclient error",e);
//			}
//		}
//	}
//
//	public static String doHttpsPost(String url, JSONObject jsonParam,
//								boolean noNeedResponse) throws ClientProtocolException, IOException {
//
//		RequestConfig requestConfig = RequestConfig.DEFAULT;
//		//设置超时
//		HttpClientContext context = HttpClientContext.create();
//
//			requestConfig = RequestConfig.custom()
//					.setConnectTimeout(2000)
//					.setConnectionRequestTimeout(2000)
//					.setSocketTimeout(2000).build();
//		context.setRequestConfig(requestConfig);
//
//
//		// Trust own CA and all self-signed certs
//		SSLContext sslcontext = null;
//
//		//信任所有证书
////		if (StringUtil.isEmpty(protocolConfig.getHttpsCertificate())) {
//			try {
//				sslcontext = SSLContexts.custom()
//						.loadTrustMaterial(new TrustStrategy() {
//							@Override
//							public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
//								return true;
//							}
//						})
//						.build();
//			} catch (Exception e) {
//				log.error("https init error : ", e);
//			}
//
//		SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
//				sslcontext,
//				new String[]{"TLSv1"},
//				null,
//				SSLConnectionSocketFactory.getDefaultHostnameVerifier());
//
//		httpClient = HttpClients.custom().setRetryHandler()
//				.setSSLSocketFactory(sslsf)
//				.build();
//
//		String str = null;
//		HttpPost method = new HttpPost(url);
//		if (null != jsonParam) {
//			StringEntity entity = new StringEntity(jsonParam.toString(),
//					"utf-8");
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//		}
//		HttpResponse result = httpClient.execute(method);
//		url = URLDecoder.decode(url, "UTF-8");
//		if (result.getStatusLine().getStatusCode() == 200) {
//			try {
//				str = EntityUtils.toString(result.getEntity());
//				if (noNeedResponse) {
//					return null;
//				}
//			} catch (Exception e) {
//				log.error("post请求提交失败:" + url, e);
//			}
//		}
//		return str;
//	}
//
//	public static String doHttpsGet(String url) throws ClientProtocolException,
//			IOException {
//		String strResult = null;
//		RequestConfig requestConfig = RequestConfig.DEFAULT;
//		//设置超时
//		HttpClientContext context = HttpClientContext.create();
//
//		requestConfig = RequestConfig.custom()
//				.setConnectTimeout(2000)
//				.setConnectionRequestTimeout(2000)
//				.setSocketTimeout(2000).build();
//		context.setRequestConfig(requestConfig);
//
//
//		// Trust own CA and all self-signed certs
//		SSLContext sslcontext = null;
//
//		//信任所有证书
////		if (StringUtil.isEmpty(protocolConfig.getHttpsCertificate())) {
//		try {
//			sslcontext = SSLContexts.custom()
//					.loadTrustMaterial(new TrustStrategy() {
//						@Override
//						public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
//							return true;
//						}
//					})
//					.build();
//		} catch (Exception e) {
//			log.error("https init error : ", e);
//		}
//
//		SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
//				sslcontext,
//				new String[]{"TLSv1"},
//				null,
//				SSLConnectionSocketFactory.getDefaultHostnameVerifier());
//
//		httpClient = HttpClients.custom()
//				.setSSLSocketFactory(sslsf)
//				.build();
//
//		HttpGet req = new HttpGet(url);
//		HttpResponse resp = httpClient.execute(req);
//		if(null != resp){
//			strResult = EntityUtils.toString(resp.getEntity());
//			if (resp.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
//				log.error("get请求提交失败:" + url);
//			}
//		}
//		return strResult;
//	}
//
//}
